import Datastore from "lowdb";
import LodashId from "lodash-id"; // 生成唯一id
import FileSync from "lowdb/adapters/FileSync";
import path from "path";
import fs from "fs-extra";
import axios from "axios";
import { app, remote } from "electron";

const APP = process.type === "renderer" ? remote.app : app; // 根据process.type来分辨在哪种模式使用哪种模块
const STORE_PATH = APP.getPath("userData"); // 获取electron应用的用户目录

if (process.type !== "renderer") {
  if (!fs.pathExistsSync(STORE_PATH)) {
    // 如果不存在路径，就创建
    fs.mkdirpSync(STORE_PATH);
  }
}

const adapter = new FileSync(path.join(STORE_PATH, ".data.json")); // 初始化lowdb读写的json以及存储路径
const db = Datastore(adapter); // lowdb接管该文件

db._.mixin(LodashId);

// 本地设置初始化, 如果没有就创建
if (!db.has("settings").value()) {
  db.set("settings", { skin: "skin-dark", lang: "zh" }).write();
}

// 用户数据初始化, 如果没有就创建
if (!db.has("users").value()) {
  db.set("users", {
    remName: true, // 记住用户名
    remPwd: true, // 记住密码
    loginFrom: {
      username: "transaction",
      password: "666666",
    }, //
    tradeusers: [], // 交易面板用户名列表
    optional: [], // 用户自选合约id集合
  }).write();
}

// 后续新增数据库变量
if (!db.has("users.optional").value()) {
  db.set("users.optional", []).write();
}

// 导入用户窗体尺寸配置
if (!db.has("users.zoom").value()) {
  db.set("users.zoom", true).write();
}

// 交易面板数据存储，如果没有就创建
if (!db.has("trades").value()) {
  db.set("trades", {}).write();
}

let configData = {};
// axios.get('http://ttnew.zekeo.com:8080/fy/khd/config.json').then(res => {
axios
  .get("http://47.97.214.10:8098/khd/config.json?fff=3")
  .then((res) => {
    configData = res.data;
    // 交易地址节点
    // 香港  深圳 上海
    db.set("trades.lineNode", configData.tradeLine).write();
    db.set("trades.port", configData.phpPort).write();
    db.set("trades.mqttUrl", configData.mqttUrl).write();
    db.set("trades.ttnew", configData.uploadUrl).write();
    db.set("trades.ttnewplay", configData.updateplay).write();
    db.set("trades.ipUrl", configData.ipUrl).write();
  });

// 1实盘/ 2模拟盘 默认2模拟盘
if (!db.has("trades.diskType").value()) {
  db.set("trades.diskType", "1").write();
}

// 下单设置缓存数据
if (!db.has("trades.delogEve").value()) {
  db.set("trades.delogEve", false).write();
}

if (!db.has("trades.dbclickEve").value()) {
  db.set("trades.dbclickEve", true).write();
}

export default db;
